package lib.bone.common.service;

import lib.bone.common.core.domain.PageResultDTO;
import lib.bone.common.core.domain.ResponseDTO;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Pageable;

import java.util.Optional;

/**
 * @Author : kindear
 * @Date : 2022-1-9
 */

/**
 * 基础服务类
 */
public interface BaseService<T,V> {

    /**
     * 条件分页查询
     * @param pageable
     * @param example
     * @return
     */
    PageResultDTO<T> getAll(Pageable pageable, Example<T> example);

    /**
     * 根据ID删除
     * @param id
     * @return
     */
    ResponseDTO deleteById(V id);

    /**
     * 根据ID查询
     * @param id
     * @return
     */
     Optional<T> getById(V id);

    /**
     * 新增记录
     * @param t
     * @return
     */
     T saveOne(T t);
    /**
     * 更新记录
     * @param t
     * @return
     */
    T updateOne(T t);


}
